package com.gaosai.staff.utils;

import android.content.Context;
import android.os.Bundle;

import com.gaosai.staff.custominterface.CustomCommUseImplCCI;
import com.gaosai.staff.custominterface.CustomCommUseInterface;
import com.gaosai.staff.custominterface.DialogClickListener;
import com.gaosai.staff.custominterface.DialogInterface;
import com.gaosai.staff.custominterface.ProgressCancelCallBack;
import com.gaosai.staff.custominterface.SDKGeneralDialogUtil;

/**
 * 调用者使用接口方法的类 
 * @author willis
 * 
 * 调用者使用方法：
 * 1、有数据的打开界面
 *  Bundle bundle = new Bundle() ;
 *  bundle.putString("key", value) ;
 *  UseCommInterface.getInstance.startActivity(context,Activity.class,bundle) ;
 * 2、无参数的打开界面
 * 	UseCommInterface.getInstance.startActivity(context,Activity.class,null) ;
 * 
 * 带请求结果的打开界面调用方法类同
 *
 */
public class UseCommInterface implements CustomCommUseInterface,DialogInterface{
	
	/**懒汉式 线程安全的单例模式*/
	private static UseCommInterface commInterface ;
	
	/**构造方法私有化**/
	private UseCommInterface(){} ;
	
	/**取得单例公有化 线程安全**/
	public static UseCommInterface getInstance(){
		if(null == commInterface){
			synchronized (UseCommInterface.class) {
				if(null == commInterface){
					commInterface = new UseCommInterface() ;
				}
			}
		}
		return commInterface ;
	}
	

	/**
	 * 跳转到指定的activity
	 * Description:TODO
	 * @param context 上下文 
	 * @param cls 要跳转的activity class
	 * @param bundle  跳转要携带的数据
	 */
	@Override
	public void startActivity(Context context, Class<?> cls, Bundle bundle) {
		CustomCommUseImplCCI.getInstance().startActivity(context, cls, bundle) ;
	}

	/**
	 * 带请求码的跳转
	 * Description:TODO
	 * @param context 上下文 
	 * @param resquestCode 请求码
	 * @param cls 要跳转的activity class
	 * @param bundle 要携带的数据
	 */
	@Override
	public void startActivityForResult(Context context, int resquestCode,
			Class<?> cls, Bundle bundle) {
		CustomCommUseImplCCI.getInstance().startActivityForResult(context, resquestCode, cls, bundle) ;
	}

	/**
	 * 显示对话框
	 * Description:TODO
	 * @param context   上下文 
	 * @param dMessage  对话框的消息
	 * @param btnLeft   左按钮的字
	 * @param btnRight  右按钮的字
	 * @param listener  两个按钮的监听器
	 * @param flag      标志位，如一个activity弹出多个对话框，SDKDialogClickListener只需实现一次，
	 *            在按钮事件中通过判断falg来确定是哪个对话框的事件（可以为任意字符串包括""）
	 */
	@Override
	public void showDialog(Context context, String dMessage, String btnLeft,
			String btnRight, DialogClickListener listener, String flag) {
		SDKGeneralDialogUtil.getInstance().showDialog(context, dMessage, btnLeft, btnRight, listener, flag) ;
	}

	/**
	 * 
	 * Description:TODO
	 * @param context   上下文 
	 * @param dMessage  对话框的消息
	 * @param btnLeft   左按钮的字
	 * @param btnRight  右按钮的字
	 * @param listener  两个按钮的监听器
	 * @param flag      标志位，如一个activity弹出多个对话框，SDKDialogClickListener只需实现一次，
	 *            在按钮事件中通过判断falg来确定是哪个对话框的事件（可以为任意字符串包括""）
	 * @param isCancelable  点击返回是否可以取消对话框
	 */
	@Override
	public void showDialog(Context context, String dMessage, String btnLeft,
			String btnRight, DialogClickListener listener, String flag,
			boolean isCancelable) {
		SDKGeneralDialogUtil.getInstance().showDialog(context, dMessage, btnLeft, btnRight, listener, flag, isCancelable) ;
	}

	/**
	 * 对话框消失 
	 * Description:TODO
	 */
	@Override
	public void dismissDialog() {
		SDKGeneralDialogUtil.getInstance().dismissDialog() ;
	}

	@Override
	public void showProgressDialog(Context context,
			ProgressCancelCallBack cancel) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void dismissProgressDialog() {
		// TODO Auto-generated method stub
		
	}

}
